package com.itheima.day08;

import com.itheima.domain.Student;
import com.itheima.util.GeneratorStudent;

import java.time.LocalDate;
import java.util.ArrayList;

/*
3_ 对班级学生信息进行统计
学号   姓名   性别   年龄       生日        组名   手机号                 微信号
s001  张三    男      23      2000-02-02    3       15835119442     1234243234

“2123421562464”

设计学生类:
   String 学号;
   String 姓名;
   String 性别;
   int 年龄;
   LocalDate 生日;
   int  group;//组编号
   String 手机号;

   ArrayList<String> list 微信号;

容器:  ArrayList LinkedList

男生和女生各自有多少人？    可以
00后有多少人？    可以
名字长度是2的学生有多少人？ 可以
名字长度是3的学生有多少人？ 可以
姓张的同学有多少人？  可以

手机号中至少包含2个6的有哪些？  可以

手机号中至少包含1个6和1个8的有哪些？  可以
有2个的微信号的人个数  可以
有1个的微信号的人个数   可以
 */
public class Test {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        getStudents(list);
        //男生和女生各自有多少人？    可以
        long nanCount = list.stream().filter(s -> s.getGender().equals("男")).count();
        long nvCount = list.stream().filter(s -> s.getGender().equals("女")).count();
        System.out.println("男的"+nanCount);
        System.out.println("女的"+nvCount);
        //00后有多少人？    可以
        long linglinghou = list.stream().filter(s -> {
            LocalDate birthday = s.getBirthday();
            int year = birthday.getYear();
            return year >= 2000;


        }).count();
        System.out.println("00后"+linglinghou);


        //名字长度是2的学生有多少人？ 可以
        long count2Name = list.stream().filter(s -> s.getName().length() == 2).count();
        System.out.println("名字是两个的"+count2Name);
        //名字长度是3的学生有多少人？ 可以
        long count3Name = list.stream().filter(s -> s.getName().length() == 3).count();
        System.out.println("名字是三个的"+count3Name);
        //姓张的同学有多少人？  可以
        long countZhang = list.stream().filter(s -> s.getName().startsWith("张")).count();
        System.out.println("姓张的"+countZhang);
        //手机号中至少包含2个6的有哪些？  可以
        long count66 = list.stream().filter(s -> {
            String phone = s.getPhone();
            int count = 0;
            for (int i = 0; i < phone.length(); i++) {
                if (phone.charAt(i) == '6') {
                    count++;
                }
            }
            return count >= 2;

        }).count();
        System.out.println("收集号里有俩6 的"+count66);
        //手机号中至少包含1个6和1个8的有哪些？  可以
        long count68 = list.stream().filter(s -> {
            String phone = s.getPhone();
            int count6 = 0;
            int count8 = 0;
            for (int i = 0; i < phone.length(); i++) {
                if (phone.charAt(i) == '6') {
                    count6++;
                }
                if (phone.charAt(i) == '8') {
                    count8++;
                }
            }
            return count6>=1&&count8>=1;

        }).count();
        System.out.println("收集号里有6和8 的"+count68);
        //有2个的微信号的人个数  可以
        long wx2ge = list.stream().filter(s -> s.getWxNumber().size() >= 2).count();
        System.out.println("有两个微信号的人"+wx2ge);
        //有1个的微信号的人个数   可以
        long wx1ge = list.stream().filter(s -> s.getWxNumber().size() == 1).count();
        System.out.println("有一个微信号的人"+wx1ge);

    }

    private static void getStudents(ArrayList<Student> list) {
        int group=0;
        for (int i = 0; i < 40; i++) {
            Student student = GeneratorStudent.getStudent();
            if(i<10){
                student.setSid("0000"+i);
            }else{
                student.setSid("000"+i);
            }
            group++;
            student.setGroup(group);
            if(group==10){
                group=0;
            }
            list.add(student);
        }
    }


}
